// --------------------------------------------------------------------------------------------------------------------- 
// <copyright file="IWorkerProcess.cs" company="Scrum for Team System">
//   None
// </copyright>
// <summary>
//   Defines the IWorkerProcess type.
// </summary>
// ---------------------------------------------------------------------------------------------------------------------
namespace ScrumForTeamSystem.EventService.Infrastructure.Interfaces
{
    /// <summary>
    /// Defines the worker process interface
    /// </summary>
    public interface IWorkerProcess : IMessageProducer
    {
        /// <summary>
        /// Gets a value indicating whether this instance is running.
        /// </summary>
        /// <value>
        /// <c>true</c> if this instance is running; otherwise, <c>false</c>.
        /// </value>
        bool IsRunning
        {
            get;
        }

        /// <summary>
        /// Registers the event processor.
        /// </summary>
        /// <param name="eventProcessor">The event processor.</param>
        void RegisterEventProcessor(ITfsEventProcessor eventProcessor);

        /// <summary>
        /// Starts the process.
        /// </summary>
        void StartProcess();

        /// <summary>
        /// Stops the process.
        /// </summary>
        void StopProcess();
    }
}